公司的技術領域即將從 PHP 轉換到 ASP.NET,這是一個重大的決定,畢竟 ASP.NET 對我們所有人來說都是一個全新的領域,且連我自己都不太熟悉,可以想見,這條路並不好走。
對我來說,強迫自己學習成長的方法,就是把自己陷入困境,然後讓生命自己找到出路。我跟所有工程師講了,公司只給一年的時間維護現有的 PHP 網站,之後的專案可能就會選擇性地改用 ASP.NET 來開發。不過一開始,還是由我當領頭羊,挑了一個小案子用 ASP.NET 來做,體驗一下開發的過程。果不其然,痛苦萬分啊!
我的第一個案子,只有幾頁,其中有一頁要用 GridView 顯示一個表格,不過客戶的表格要把標題列中的兩個欄位合併。這麼簡單的需求,我用 PHP 來寫,這一頁頂多兩個小時就寫完了。但我用 ASP.NET 來寫,結果花了我兩天時間。寫到第二天的時候,滿腦子都是髒話,覺得幹嘛這樣搞自己,合併欄位不就是改一下 th 標籤的 colspan 屬性為 2,然後把下一個 th 移除就好啦。結果 ASP.NET (Web Form) 弄了個什麼事件導向模型(Event-driven Model),不管做什麼事都要靠事件來操作,完全不直覺阿。我也覺得奇怪,看國外的教學影片,好像都很簡單,大家都是從工具箱直接拖曳控制項就可以完成工作,為什麼我就這麼苦命。T_T
還好我的第一個 ASP.NET 專案只有我一個人做,不然我想哪個人先用 ASP.NET 開發,那個人就會先主動遞辭呈。後來我知道了,對於眼前這個全新的技術領域,你要面對它、接受它,但不能輕易放下它。我開始狂 K 書,先從入門書開始看,大概知道些新觀念後,就把先前寫過的程式重構。然後再讀多一點,再弄個新案子來實驗,慢慢地就開始跟 ASP.NET 有點熟悉了。我的堅持,開始感染公司其他的工程師,便有人主動提出他也想玩看看 ASP.NET 這技術,我猜想,他的如意算盤是「要是我寫不出來,還有保哥可以問,那就試試看吧」。跟我想的一樣,身為一個 PHP 開發人員,剛開始轉向 ASP.NET (Web Form) 都是痛苦的,而且幾乎只看到缺點,也就是套版不夠彈性這部分,也對於 Web Form 的元件化封裝技術(伺服器控制項)沒有多大好感。
導入 ASP.NET 大約將近一年的時間,幾乎所有 PHP 工程師都走光了,沒有人想學 ASP.NET 開發技術。這點我完全能理解,畢竟我自己走過這一遭就真的是很痛苦,要是沒有明確的動機,誰願意放棄累積多年的開發技術與經驗呢。所以,我只能自立自強,想辦法讓自己能夠對 ASP.NET 更加理解,讓我的開發效率在更好一些,不過成長的幅度還是有限。
接下來,我在一個因緣際會下,認識了幾位台科大的學弟(相差十幾屆),他們在學校曾經學過幾個月 ASP.NET,也做過幾個學校的案子,我覺得他們還不錯,便問他們願不願意來我公司工讀,結果他們都非常有意願加入。就這樣,一個拉一個,拉到顛峰時期公司有六到七位 ASP.NET 工讀生之多,幾乎成為公司的開發主力。在當下對一間以技術為導向的公司來說,確實是蠻詭異的,因為公司的開發主力竟然是一群大學二、三年級的毛頭小子。
這群學弟妹們,我看見他們不辭辛勞的努力學習、努力完成專案,雖然他們年紀輕輕的沒什麼經驗,撰寫的程式碼品質也沒有很好,也沒什麼架構可言,就是為了完成專案而自己想出的一些奇怪招式,但他們個個都擁有滿腔熱血並樂在其中,那感覺真的很棒。我只要看到大家願意學習,就會有一股衝動想要教會它們。剛開始的時候,我花了很多時間檢視他們寫過的程式碼,基於人性,我還是會邊看邊搖頭,外加幾聲草泥馬,最後還是忍住不親自動手改,而是讓他們依照我的意思「親手」把程式碼改成我要的樣子,這樣做中學的過程,才是對他們最好的回報。
這個過程中,有件事蠻有趣的,他們知道我對 ASP.NET 不是很熟悉,畢竟也才剛轉一年左右,但他們每次來問我問題時,我總是能幫他們指出正確的開發方向,這點確實讓他們不解,因為我提出的解決方法或觀念,是他們怎樣也想不到的。
我們在學習開發技術的過程中,不單單只是學習如何寫程式而已,更重要的還要能知道「為什麼」要這樣寫,了解技術背後的原理,比怎樣解決一個問題來的重要。只要你認真地分析過一個問題,之後再遇到相同或類似的問題時,自然能觸類旁通,更精準地掌握問題發生的原因,也能更快速的找到解決方案。很難想像,我的開發觀念都來自於多年的 PHP 開發經驗,原本以為學習 ASP.NET 之後,所有之前學習過的技術都沒用了,但其實不然,有許多你曾用心學習、認真體驗過的技術領域,就算跳到另一個領域,還是有很多觀念可以借鏡,所以還是有很大幫助。
我如果有機會跟晚輩交流,都會建議他們無論學什麼技術或程式語言,你至少要「精通」一樣,這樣學習下一段新技術時,才能夠建立跟以往學習經歷相互連結,這種連結關係可以幫助你在解決問題時更有創意,也更有助於你成為開發領域的專家。
就這樣,公司花了一、兩年的時間轉型,雖然最後很不幸的,公司原本的 PHP 開發人員全數陣亡(離職),只有我自己轉型成功。我不知道這算成功還是失敗,但站在公司經營的立場上來看,這個轉型的過程,客戶完全沒感覺,業績也沒有因此而降低(反而還高出許多),產出給客戶的網站品質也不差,這成績應該還算低空飛過吧。
即便技術轉型帶來的人事震盪如此之大,但對我來說這是一個過程,是學習的機會,是成長的契機。技術轉型的過程並不短,所以我選擇不急於評斷對與錯、好與壞,而是方向定了就堅持到底,這樣的堅持才會有力量。你若在創業的路途上,不斷地懷疑自己的決定,讓負面情緒不斷侵蝕自己的心,那只會增加內耗,最終只會磨滅創業的初衷與熱情,那就得不償失了。
不斷地懷疑自己的決定,讓負面情緒不斷侵蝕自己的心,
那只會增加內耗,最終只會磨滅創業的初衷與熱情,那就得不償失了。
這一句話,講的超好。
我剛好相反,最早碰ASP.net web form
近期拜讀保哥的ASP.net MVC
現在一些"玩具"都強迫自已用MVC下去做,一開始真的很痛苦。(太不習慣了)
不過現在又面臨可能要用php下去開發
究竟會不會像故事中的工程屍們陣亡呢讓我們看下去!
不過轉換的時候,努力熬過陣痛期就對了!!
再次謝謝保哥的分享
加油